package com.jier.service;

import tk.mybatis.mapper.entity.Example;

import java.util.List;

/**
 * 基础接口业务
 *
 * @param <T>
 * @author jie_r
 */
public interface IBaseService<T> {
    /**
     * 根据ID获取数据
     *
     * @param id
     * @return
     * @throws Exception
     */
    T getById(Object id) throws Exception;

    /**
     * 获取全部数据
     *
     * @return
     * @throws Exception
     */
    List<T> getAll() throws Exception;

    /**
     * 根据条件获取数据集合
     *
     * @param example
     * @return
     * @throws Exception
     */
    List<T> getByExample(Example example) throws Exception;

    /**
     * 根据条件获取唯一数据
     *
     * @param example
     * @return
     * @throws Exception
     */
    T getUniqueByExample(Example example) throws Exception;

    /**
     * 根据ID删除数据
     *
     * @param id
     * @throws Exception
     */
    int deleteById(Object id) throws Exception;

    /**
     * 根据ID集删除数据
     *
     * @param ids
     * @throws Exception
     */
    int delByIds(String ids) throws Exception;

    /**
     * 根据条件删除数据
     *
     * @param example
     * @throws Exception
     */
    int deleteByExample(Example example) throws Exception;

    /**
     * 根据实体更新数据
     *
     * @param obj
     * @throws Exception
     */
    int updateById(T obj) throws Exception;

    /**
     * 保存实体数据
     *
     * @param obj
     * @throws Exception
     */
    int save(T obj) throws Exception;

    /**
     * 保存实体集合，默认为空，需要时重写
     *
     * @param list
     * @throws Exception
     */
    int savAll(List<T> list) throws Exception;
}